<template>
  <div class="base-container" id="main">
    <t-form ref="form" :data="queryParams" label-width="80" @submit="()=>{this.pagination.current=1;this.queryParams.pageNum=1;this.getList()}" @reset="()=>{this.queryParams.pageNum=1;this.queryParams.pageNum=1;this.getList()}">
      <t-row style="border-bottom: 1px solid #E5E6EB;margin-bottom: 10px">
        <t-col :span="11" class="query-form-inline">
          <t-form-item label="标准名称" name="projectName">
            <t-input
              v-model="queryParams.projectName"
              clearable
              placeholder="请输入标准名称"
              style="width: 240px"
            />
          </t-form-item>
          <t-form-item label="标准编号" name="projectNum">
            <t-input
              v-model="queryParams.projectNum"
              clearable
              placeholder="请输入标准编号"
              style="width: 240px"
            />
          </t-form-item>
          <t-form-item label="起草单位" name="draftUnitNames">
            <t-input
              v-model="queryParams.draftUnitNames"
              clearable
              placeholder="请输入起草单位"
              style="width: 240px"
            />
          </t-form-item>
          <t-form-item label="起草人员" name="draftPersonNames">
            <t-input
              v-model="queryParams.draftPersonNames"
              clearable
              placeholder="请输入起草单位"
              style="width: 240px"
            />
          </t-form-item>
          <t-form-item label="申报日期" name="publicDateRange">
            <t-date-range-picker style="width: 280px" :placeholder="['开始时间','结束时间']" v-model="queryParams.publicDateRange"  allow-input clearable/>
          </t-form-item>
        </t-col>
        <t-col :span="1" class="operation-container">
          <t-button theme="primary" type="submit"> 查询</t-button>
          <t-button theme="default" variant="outline" type="reset">重置</t-button>
        </t-col>
      </t-row>
    </t-form>
    <!--    <div class="btn-group-inline">-->
    <!--      <t-button @click="apply" variant="outline" theme="primary">-->
    <!--        <t-icon name="add" slot="icon"/>-->
    <!--        新增-->
    <!--      </t-button>-->
    <!--    </div>-->
    <t-table rowKey="index" size="small" :data="data" :columns="columns" hover :pagination="pagination"
             :loading="dataLoading" :sort="sort" :hideSortTips="true" @sort-change="sortChange">
      <template #projectName="{ row }">
        <t-link @click="dialog.header=row.projectName;dialog.objId=row.id;dialog.open_detail=true" hover="color" theme="primary">{{ row.projectName }}</t-link>
      </template>
      <template #formulateType="{ row }">
        {{ row.formulateType | filterByDict(dict.type.formulate_type) }}
      </template>
      <template #systemName="{ row }">
        {{row.systemName || "-"}}
      </template>
      <template #manageDeptId="{ row }">
        {{ row.manageDeptId | filterByTree(deptMenuOptions) }}
      </template>
      <template #reviseNum="{ row }">
        {{row.reviseNum||"-"}}
      </template>
      <template #consistencyDegree="{ row }">
        {{row.consistencyDegree||"-"}}
      </template>
      <template #internationalStandardNum="{ row }">
        {{row.internationalStandardNum||"-"}}
      </template>
      <template #op="{ row }">
        <t-button size="small" @click="dialog.header=row.projectName;dialog.objId=row.id;dialog.open_detail=true" variant="text" class="t-button-link">
          <t-icon name="info-circle" slot="icon"/>
          详情
        </t-button>
        <t-button size="small" @click="opinionVisible = true; header = row.projectName; nowRow = row" variant="text"
                  class="t-button-link">
          <t-icon name="edit-1" slot="icon" />
          评价
        </t-button>
      </template>
    </t-table>
    <t-button @click="goOpinion">去评价（暂放）</t-button>
    <standardDetailDialog  :header="dialog.header" :objId="dialog.objId"  :visible.sync="dialog.open_detail" v-if="dialog.open_detail">
    </standardDetailDialog>
    <t-dialog :visible.sync="deleteVisible" :closeOnOverlayClick="false" @confirm="deleteById"  theme="warning" :header="nowRow.projectName">
      <p>您确定要删除吗？</p>
    </t-dialog>
    <t-dialog :visible.sync="opinionVisible" :confirmBtn="null" width="40%" :header="header"
              :cancelBtn="null">
      <t-form ref="form" @submit="onSubmit" :colon="true" labelWidth="160px" :rules="rules" :data="formData">
        <t-form-item label="地方标准章条编号" name="chapterNum">
          <t-input v-model="formData.chapterNum" placeholder="请输入地方标准章条编号" />
        </t-form-item>
        <t-form-item label="意见内容" name="opinion">
          <t-textarea v-model="formData.opinion" :autosize="{ minRows: 3 }" placeholder="请输入您的意见" />
        </t-form-item>
        <t-form-item label="您的名字" name="personName">
          <t-input v-model="formData.personName" placeholder="请输入您的名字" />
        </t-form-item>
        <t-form-item label="您的单位名" name="deptName">
          <t-input v-model="formData.deptName" placeholder="请输入您的单位名" />
        </t-form-item>
        <t-row>
          <t-col :span="12" class="operation-container">
            <t-button theme="default" variant="outline" type="reset" @click="opinionVisible = false">取消</t-button>
            <t-button theme="primary" type="submit"> 提交</t-button>
          </t-col>
        </t-row>
      </t-form>
    </t-dialog>
  </div>
</template>

<script>
import standardDetailDialog from "@/pages/bzh/standard/components/standard-detail-dialog.vue";

export default {
  name: "opinion-yk",
  dicts:["formulate_type"],
  components: {
    standardDetailDialog
  },
  data() {
    return {
      rules: {
        chapterNum: [
          {
            required: true,
            message: "地方标准章条不能为空",
          },
        ],
        opinion: [
          {
            required: true,
            message: "意见内容不能为空",
          },
        ],
        // dealOpinion: [
        //   {
        //     required: true,
        //     message: "处理意见内容不能为空",
        //   },
        // ],
        personName: [
          {
            required: true,
            message: "您的名字不能为空",
          },
        ],
        deptName: [
          {
            required: true,
            message: "您的单位名不能为空",
          },
        ],
      },
      opinionVisible: false,
      formData: {
        // chapterNum: "",
        // opinion: "",
        // opinionSource: "",
        // dealOpinion: ""
        chapterNum: "",
        opinion: "",
        personName: "",
        deptName: ""
      },
      header: "",
      nowRow:{},
      deleteVisible:false,
      deptMenuOptions:[],
      queryParams:{
        pageNum:1,
        pageSize:10,
        projectName:"",
        formulateType:"",
        publicDateRange: [],
      },
      pagination: {
        current: 1,
        pageSize: 10,
        total: 0,
        showPageSize: true,
        pageSizeOptions: [10, 20, 30, 50],
        showFirstAndLastPageBtn: false,
        onChange: (pageInfo) => {
          Object.assign(this.pagination,pageInfo)
          this.queryParams.pageNum = pageInfo.current || 1;
          this.queryParams.pageSize = pageInfo.pageSize;
          this.getList()
        },
      },
      dialog:{
        objId:"",
        header:"",
        open_detail: false,
      },
      sort:[],
      dataLoading: false,
      columns:[
        {
          colKey: "projectName",
          title: "标准名称",
          align: "center",
          width: 220
        },
        {
          colKey: "systemName",
          title: "标准体系",
          align: "center",
          width: 160,
        },
        // {
        //   colKey: "linkMan",
        //   title: "标准性质",
        //   align: "center",
        //   width: 160,
        // },
        {
          colKey: "formulateType",
          title: "制定或修订",
          align: "center",
          width: 160,
        },
        {
          colKey: "reviseNum",
          title: "被修订标准号",
          align: "center",
          width: 160,
        },
        {
          colKey: "consistencyDegree",
          title: "一致性程度",
          align: "center",
          width: 160,
        },
        {
          colKey: "internationalStandardNum",
          title: "国际标准号",
          align: "center",
          width: 160,
        },

        {
          colKey: "manageDeptId",
          title: "主要起草单位",
          align: "center",
          width: 160,
        },
        {
          colKey: "completeDate",
          title: "完成时间",
          align: "center",
          width: 160,
          sorter: true,
        },
        {
          colKey: "op",
          title: "操作",
          align: "center",
          width: 120,
          fixed: 'right'
        },
      ],
      data: []
    }
  },
  async created() {
    await this.getList()
    await this.getDeptTreeSelect()
  },
  methods: {
    goOpinion(){
      this.$router.push("/bzhEvaluation")
    },
    onSubmit({ validateResult, firstError }) {
      if(validateResult === true){
        this.formData.localId = this.nowRow.id
        this.$api.bzh.opinion.add(this.formData).then(response => {
          this.$refs.form.reset()
          this.$message.success("提交成功")
          this.opinionVisible = false
        }).catch(e => {
          this.$message.error(e.toString())
        })
      } else {
        this.$message.error(firstError)
      }
    },
    // 关闭详情弹框
    closeBzhDialog(data){
      this.dialog.visible = data
    },
    // 点击列表名字事件
    nameClick(row){
      this.dialog.id = row.id
      this.dialog.header = row.projectName
      this.dialog.visible = true
    },
    // 排序
    sortChange(sort){
      this.sort = sort;
      let orderByColumn = []
      let isAsc = []
      if(sort instanceof Array){
        orderByColumn = sort.map(val=>val.sortBy)
        isAsc = sort.map(val=>val.descending?`desc`:`asc`)
      }else {
        orderByColumn = [sort.sortBy]
        isAsc = [sort.descending?`desc`:`asc`]
      }
      this.queryParams.orderByColumn = orderByColumn.join(",")
      this.queryParams.isAsc = isAsc.join(",")
      this.getList();
    },
    // 获取接口数据
    async getList(){
      [this.queryParams.startPublishDate,this.queryParams.endPublishDate] = this.queryParams.publicDateRange;
      this.dataLoading = true
      this.queryParams.pageNum = this.pagination.current || 1
      this.queryParams.localStandardStatus = 3
      let response = {}
      let response2 = {}
      try {
        response = await this.$api.bzh.standard.list(this.queryParams)
        this.queryParams.localStandardStatus = 5
        response2 = await this.$api.bzh.standard.list(this.queryParams)
        this.pagination.total = response.total+response2.total
        this.data = response.rows.concat(response2.rows)
        this.dataLoading = false
      }catch (e) {
        this.dataLoading = false
        await this.$message.error(e.toString())
      }
    },
    getDeptTreeSelect(){
      return this.$api.system.dept.treeSelectAllIn().then(response=>{
        this.deptMenuOptions = response.data
      }).catch(e=>{
        this.$message.error(e.toString())
      })
    },
    apply(){
      this.$router.push(`/bzh/standard/draft-review`);
    },
    // 删除按钮
    deleteById(){
      this.$api.bzh.standard.delete(this.nowRow.id).then(response=>{
        this.getList()
        this.$message.success("删除成功")
        this.deleteVisible = false
      }).catch(error=>{
        this.$message.error(error.toString())
      })
    },
    // 编辑按钮
    edit(row){
      this.$router.push({
        path:`/bzh/standard/draft-review`,
        query:{
          id:row.id
        }
      });
    }
  }
}
</script>

<style lang="less" scoped>

</style>

